home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / OTHER_LA / 2014.ZIP / TIMEDATE.TXT < prev   
Text File  |  1989-04-25  |  6KB  |  181 lines

  1. #                                 ╔═╕ ╔═╗ ╔═╗ 
  2.                                   ╚═╗ ╠═╝ ╠═╣ 
  3.                                   ╘═╝∙╨ ∙ ╜ ╙∙
  4.  
  5.  
  6.  
  7.  
  8.                                    TIMEDATE                                   1
  9.  
  10.  
  11. Application:
  12.  
  13.                 The TIMEDATE segment contains procedures to aquire the time and
  14.         date from MS/DOS (tm). These may then be printed and manipulated using
  15.         further procedures from the segment which includes a procedure for
  16.         recording elapsed times during a program run.
  17.  
  18. Specifications:
  19.  
  20.         BOOL frac secs := FALSE;
  21.         BOOL alpha day := FALSE;
  22.  
  23.         PROC print time now = VOID:
  24.  
  25.         PROC print date now = VOID:
  26.  
  27.         PROC print day name = VOID:
  28.  
  29.                 The number of character positions occupied by both "print time
  30.         now" and "print date now" at default settings is 8. If fract secs :=
  31.         TRUE then "print time now" occupies 11 character positions and includes
  32.         hundredths of seconds. If alpha day := TRUE then "print day now"
  33.         occupies 18 character positions and includes the name of the day. The
  34.         character positions occupied by "print day name" varies between six
  35.         (Monday) and eight (Saturday) as required by the actual name.
  36.  
  37.  
  38. Example:
  39.  
  40.                 In the following example, *LIB directives and new code
  41.         introduced by TIMEDATE are offset to the extreme left of the text while
  42.         A.A.L. Algol 68 is indented by one or more tab stops. #
  43.  
  44. *LIB timedate
  45.  
  46.         ps("The time is ");
  47. print time now;
  48.         ps(" to the nearest second."); nl;
  49.         ps("And the date is ");
  50. print date now; nl;
  51.         ps("Or, to an accuracy of 100th second, the time is ");
  52. fract secs := TRUE;
  53. print time now; nl;
  54. fract secs := FALSE;    #Optional reset for future usage of print time now.# 
  55.         ps("If the name of the day is required, the date is ");
  56. alpha day := TRUE;
  57. print date now; nl;
  58. alpha day := FALSE;     #Optional resetting of alphabetic day name requirement#
  59.         ps("And today is ");
  60. print day name;
  61. #
  62.  
  63.  
  64.  
  65.  
  66.                                    TIMEDATE                                   2
  67.  
  68.  
  69. Specifications:
  70.  
  71.         MODE TIME = STRUCT(INT hours, minutes, seconds, hundredths);
  72.  
  73.         MODE DATE = STRUCT(INT year, month, day, []CHAR day name);
  74.  
  75.         PROC timenow = TIME:
  76.  
  77.         PROC pelapsed = (TIME t )VOID:
  78.  
  79.         PROC elapsed time = (TIME t )TIME:
  80.  
  81.                 t       = TIME previously recorded which will be subtracted
  82.                                from the current time to give an elapsed time.
  83.  
  84.  
  85. Example:
  86.  
  87.                 To time a computer operation it is necessary to note the time,
  88.         perform the operation and then print the time difference. First, a TIME
  89.         is declared and initialized to timenow: #
  90.  
  91. TIME at start = timenow;
  92.  
  93.         #Next a time consuming operation is performed#
  94.  
  95.         INT x := 1;
  96.         FOR i TO 10000 DO x +:= 1 OD;
  97.         nl;
  98.         ps("The time taken for 10000 additions was ");
  99. pelapsed(at start);
  100.         nl;
  101.  
  102.         #i.e. the time between "timenow" and "pelapsed" which is printed as the
  103.         elapsed time#
  104.  
  105.         ps("Or to the nearest 100th of a second ");
  106. fract secs := TRUE;
  107. pelapsed(at start);
  108. fract secs := FALSE;
  109.         nl;
  110.  
  111.         #On some occasions it may be preferable to retain the elapsed time for
  112.         printing at a later stage in the program rather than using "pelapsed"
  113.         which prints the result immediately it is evaluated.#
  114.  
  115. TIME another = elapsed time(at start);
  116.  
  117.         #Declares a TIME called "another" which represents the time elapsed
  118.         between "at start" and this point in the program. This time, together
  119.         with "at start", may be printed at a later stage and this is
  120.         demonstrated in the following section.
  121.  
  122.  
  123.  
  124.  
  125.  
  126.                                    TIMEDATE                                   3
  127.  
  128.  
  129. Specifications:
  130.  
  131.         PROC ptime = (TIME t )VOID:
  132.  
  133.         PROC datenow = DATE:
  134.  
  135.         PROC pdate = (DATE d )VOID:
  136.  
  137.                 t       = TIME to be printed.
  138.                 d       = DATE to be printed.
  139.  
  140.  
  141. Example:
  142.  
  143.         Continues from that above. These procedures of TIMEDATE enable output
  144.         of TIME and DATE entities. This output will be directed to whichever
  145.         channel is selected by the A.A.L. Algol 68 "put to ***" procedures.
  146.  
  147.         In order to save a DATE for later printing, perhaps several times, e.g.
  148.         at the top of each page of output, it must first be declared and
  149.         initialized.#
  150.  
  151. DATE today = datenow;
  152.  
  153.         #Then the times and date saved above may be printed as follows#
  154.         nl; nl;
  155.         ps("This program was run on ");
  156. alpha day := TRUE;
  157. pdate(today); nl;                       #As declared above#
  158.         ps("The 10000 additions started at ");
  159. ptime(at start); nl;                    #Again as declared above#
  160.         ps("The time taken for 10000 additions + a few instructions was ");
  161. fract secs := TRUE;
  162. ptime(another); nl;                     #And yet again as declared above#
  163. #
  164.         To validate the examples given in this text, the entire text may be
  165.         compiled:-
  166.  
  167.                 compile timedate.txt
  168.  
  169.         and the resulting TIMEDATE.COM file may be run with:-
  170.  
  171.                 timedate
  172.  
  173.         NOTE:- TIMEDATE.COM contains a worked example utilizing TIMEDATE.A68
  174.         and NOT a compiled version of TIMEDATE.A68.
  175.  
  176.         A compiled version of this document is provided in TIMEDATE.COM which
  177.         may be run to verify the example. For maximum confidence, please
  178.         compile TIMEDATE.TXT for yourself!
  179.  
  180. Copyright (c) Structured Programming Associates Limited, March 1989.
  181.